﻿using GigaSite.Domain.Entities;
using GigaSite.Domain.Interfaces.Repositories;
using GigaSite.Domain.IoC;
using Newtonsoft.Json;

namespace GigaSite.Web.Areas.ControlPanel.Models
{
    /// <summary>
    /// Мдель баннера на главной странице
    /// </summary>
    public class HomePageBanner
    {
        /// <summary>
        /// Идентификатор записи
        /// </summary>
        [JsonProperty("id")]
        public long Id { get; set; }

        /// <summary>
        /// Заголовок баннера
        /// </summary>
        [JsonProperty("title")]
        public string Title { get; set; }

        /// <summary>
        /// URL на который он ведет
        /// </summary>
        [JsonProperty("URL")]
        public string URL { get; set; }

        /// <summary>
        /// URL фотографии на которую ведет баннер
        /// </summary>
        [JsonProperty("photoURL")]
        public string PhotoURL { get; set; }

        /// <summary>
        /// Реальный URL по которому баннер доступен на странице
        /// </summary>
        [JsonProperty("realURL")]
        public string RealURL { get; set; }

        /// <summary>
        /// Отображать ли этот элемент
        /// </summary>
        [JsonProperty("hidden")]
        public bool Hidden { get; set; }

        /// <summary>
        /// Регион в котором отображать данный баннер
        /// </summary>
        [JsonProperty("region")]
        public string Region { get; set; }

        /// <summary>
        /// Порядковый номер используемый для сортировки
        /// </summary>
        [JsonProperty("sequence")]
        public int Sequence { get; set; }

        /// <summary>
        /// Стандартный конструктор
        /// </summary>
        public HomePageBanner()
        {
            
        }

        /// <summary>
        /// Конструктор на основе Элемента главной страницы
        /// </summary>
        /// <param name="element">Элемент главной страницы</param>
        public HomePageBanner(HomePageElement element)
        {
            Id = element.Id;
            Title = element.Title;
            URL = element.URL;
            PhotoURL = element.ImageURL;
            RealURL = element.ImageURL.StartsWith("file://")
                          ? Locator.GetService<IImagesRepository>().GetFullImageURL(element.ImageURL)
                          : element.ImageURL;
            Hidden = element.Hidden;
            Region = element.Region;
            Sequence = element.Sequence;
        }
    }
}